package com.example.server;

import com.example.dto.menu.Menu;
import com.example.dto.menu.MenuCriteria;

import java.util.*;

public interface MenuServer {
    /**
     * 新增菜单
     *
     * @param menu
     * @return Map<String, Object>
     */
    void create(Menu menu);
    /**
     * 删除菜单
     *
     * @param
     * @return
     */
    void delete(List<Long> ids);
    /**
     * 修改菜单信息
     * @param resources
     * @return
     */
    void update(Menu resources);
    /**
     * 查询全部数据
     * @throws Exception /
     * @return /
     */
    List<Menu> list(MenuCriteria menuCriteria);
    /**
     * 构建菜单树
     * @return /
     */
    List<Menu> buildTree(List<Menu> menuDtos);
    /**
     * 构建菜单树
     * @param menus /
     * @return /
     */
    Object buildMenus(List<Menu> menus);
    /**
     * 懒加载菜单数据
     * @param pid /
     * @return /
     */
    List<Menu> getMenus(Long pid);
    /**
     * 根据ID查询
     * @param id /
     * @return /
     */
    Menu findOne(Long id);
    /**
     * 获取所有子节点，包含自身ID
     * @param menuList /
     * @param menuSet /
     * @return /
     */
    Set<Menu> getChildMenus(List<Menu> menuList, Set<Menu> menuSet);
    /**
     * 根据ID查询
     * @param id /
     * @return /
     */
    Menu findById(long id);
    /**
     * 根据ID获取同级与上级数据
     * @param menuDto /
     * @param objects /
     * @return /
     */
    List<Menu> getSuperior(Menu menuDto, List<Menu> objects);
    /**
     * 根据当前用户获取菜单
     * @param  /
     * @return /
     */
    List<Menu> findByUser(Long userId);

}
